package com.three.iot.api;

import com.three.iot.commons.dto.*;
import com.three.iot.commons.enums.Result;

import java.util.List;

/**
 * @author luiz
 * @Title: UserDeviceService
 * @ProjectName iot-server
 * @Description: TODO
 * @date 2019-05-23 9:57
 */
public interface UserDeviceService {
    /**
     * 按照用户编号查找所属设备列表
     * @param userNo
     * @return
     */
    Result<List<UserDeviceRespDto>> findDeviceList(String userNo);

    /**
     * 按照用户编号查找所属设备列表(数据库内)
     * @param userNo
     * @return
     */
    Result<List<UserDeviceRespDto>> findDbDeviceList(String userNo);

    /**
     * 查询设备属性数据
     * @param iotNo
     * @param groupNo
     * @param userNo
     * @return
     */
    Result<DeviceMultiAttrDataRespDto> findMultiAttrDataList(String iotNo, String groupNo, String userNo);

    /**
     * 控制设备属性
     * @param devicePropertyControlReqDto
     * @return
     */
    Result setDeviceProperty(DevicePropertyControlReqDto devicePropertyControlReqDto);

    /**
     * 获取设备某个属性数据详情
     * @param devicePropertyDataReqDto
     * @return
     */
    Result<DeviceSingleAttrDataRespDto> findSigleAttrDataList(DevicePropertyDataReqDto devicePropertyDataReqDto);


    Result<List<UserResultDto>>  findUserByIotId(String iotId);

    Result bindUser(String iotId, String userNo,String operUserNo);

    Result unbind(String iotId, String userNo, String operUserNo);

    /**
     * 按照用户编号查询所有设备列表  包含已绑定、未绑定
     * @param userNo
     * @return
     */
    Result findDeviceByUserNo(String userNo);

    /**
     * 按照设备编号查询所有用户信息 包含绑定状态
     */
    Result findUserByDeviceId(String iotId);

    /**
     *  用户设备批量绑定
     * @param userDeviceDtos
     * @return
     */
    Result  bindDeviceList(List<UserDeviceDto> userDeviceDtos);


    /**
     *  用户设备批量绑定
     * @param iotList
     * @return
     */
    Result  bindUserDeviceList(String userNo,List<String> iotList);

    /**
     *  用户设备批量绑定
     * @param userList
     * @return
     */
    Result  bindDeviceUserList(String iotId,List<String> userList);

}
